#region License

// This file is part of Grawlix.
// 
// Grawlix is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
// Grawlix is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public
// License along with Grawlix.  If not, see
// <http://www.gnu.org/licenses/>.

#endregion

using System;
using System.Runtime.Serialization;

namespace Grawlix.Geometry
{
	/// <summary>
	/// An exception specifying an error occurred due to
	/// invalid geometry.
	/// </summary>
	[Serializable]
	public class InvalidGeometryException : Exception
	{
		/// <summary>
		/// Initializes a new instance of
		/// the <see cref="InvalidGeometryException" /> class.
		/// </summary>
		public InvalidGeometryException()
		{
		}

		/// <summary>
		/// Initializes a new instance of the
		/// <see cref="InvalidGeometryException" />
		/// class with a specified error message.
		/// </summary>
		/// <param name="message">The message
		/// that describes the error. </param>
		public InvalidGeometryException(string message)
			: base(message)
		{
		}

		/// <summary>
		/// Initializes a new instance of the
		/// <see cref="InvalidGeometryException" /> class with
		/// a specified error message and a reference to the
		/// inner exception that is the cause of this exception.
		/// </summary>
		/// <param name="message">The error message that
		/// explains the reason for the exception. </param>
		/// <param name="innerException">The exception that is
		/// the cause of the current exception, or a null reference
		/// (Nothing in Visual Basic) if no
		/// inner exception is specified. </param>
		public InvalidGeometryException(string message,
		                                Exception innerException)
			: base(message, innerException)
		{
		}

		/// <summary>
		/// Initializes a new instance of the
		/// <see cref="InvalidGeometryException" />
		/// class with serialized data.
		/// </summary>
		/// <param name="info">The
		/// <see cref="SerializationInfo" />
		/// that holds the serialized object data about
		/// the exception being thrown. </param>
		/// <param name="context">The
		/// <see cref="StreamingContext" />
		/// that contains contextual information about the
		/// source or destination. </param>
		/// <exception cref="ArgumentNullException">The
		/// <paramref name="info" /> parameter is null. </exception>
		/// <exception
		/// cref="SerializationException">
		/// The class name is null or
		/// <see cref="Exception.HResult" /> is zero (0).
		/// </exception>
		protected InvalidGeometryException(SerializationInfo info,
		                                   StreamingContext
		                                   	context)
			: base(info, context)
		{
		}
	}
}